package model

import (
	"gorm.io/gorm"
	"rpc-server/basic/global"
	"time"
)

type Good struct {
	Id          uint           `gorm:"column:id;type:int UNSIGNED;primaryKey;not null;" json:"id"`
	GoodsTitle  string         `gorm:"column:goods_title;type:varchar(100);comment:商品标题;not null;" json:"goods_title"`                     // 商品标题
	GoodsDesc   string         `gorm:"column:goods_desc;type:varchar(200);comment:描述;not null;" json:"goods_desc"`                         // 描述
	GoodsCover  string         `gorm:"column:goods_cover;type:varchar(200);comment:封面;not null;" json:"goods_cover"`                       // 封面
	GoodsPrice  float64        `gorm:"column:goods_price;type:decimal(10, 2);comment:价格;not null;" json:"goods_price"`                     // 价格
	GoodsStock  int32          `gorm:"column:goods_stock;type:int;comment:库存;not null;" json:"goods_stock"`                                // 库存
	CheckStatus int            `gorm:"column:check_status;type:tinyint;comment:审核状态： 1:待审核 2:审核通过 3:审核不通过 ;not null;" json:"check_status"` // 审核状态： 1:待审核 2:审核通过 3:审核不通过
	Status      int            `gorm:"column:status;type:tinyint;comment:状态： 1:上架 2:下架;not null;" json:"status"`                           // 状态： 1:上架 2:下架
	CreateAt    time.Time      `gorm:"column:create_at;type:datetime(3);default:CURRENT_TIMESTAMP(3);" json:"create_at"`
	UpdateAt    time.Time      `gorm:"column:update_at;type:datetime(3);default:CURRENT_TIMESTAMP(3);" json:"update_at"`
	DeleteAt    gorm.DeletedAt `gorm:"column:delete_at;type:datetime(3);default:NULL;" json:"delete_at"`
}

func (g *Good) TableName() string {
	return "good"
}

func (g *Good) Create() error {
	return global.DB.Create(&g).Error
}

func (g *Good) Detail() error {
	return global.DB.Where("check_status = 1 and status = 1").First(&g).Error
}

func (g *Good) List() (goodList []*Good, err error) {
	err = global.DB.Find(&goodList).Error
	return
}
